package com.mindbox.mueblesalpes.presentacion.reportes;


import com.mindbox.mueblesalpes.negocio.entity.Ciudad;
import com.mindbox.mueblesalpes.negocio.reportes.IReportes;
import com.mindbox.mueblesalpes.negocio.reportes.ReporteTop;
import com.mindbox.mueblesalpes.presentacion.utils.Mensajes;
import com.mindbox.mueblesalpes.presentacion.utils.RequestParameters;
import java.util.Date;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

/**
 * BackingBean para el reporte de productos más vendidos
 * @author Jaimoto
 */

public class ReporteTopBean {

    private ReporteTop reporte;
    @EJB
    private IReportes reportesService;


    /** Creates a new instance of ReporteTopBean */
    public ReporteTopBean() {
    }

    /**
     * Realiza la carga de los datos iniciales del reporte
     */
    public void loadReport(){
        try {
            HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
            String idCiudad = (String) request.getAttribute(RequestParameters.ciudad.name());
            Ciudad ciudad = new Ciudad();
            if(idCiudad != null){
                ciudad.setIdCiudad(Long.valueOf(idCiudad));
                reporte = reportesService.generarReporteProductoTop((Date)request.getAttribute(RequestParameters.fechaIni.name()),(Date)request.getAttribute(RequestParameters.fechaFin.name()), ciudad, 10);
            }
        } catch (Exception e) {
            Mensajes.asignarMensajeError("common.error",e.getMessage());
        }
    }

    /**
     * Obtiene la referencia del reporte
     * @return
     */
    public ReporteTop getReporte() {
        if(reporte == null)
            loadReport();
        return reporte;
    }

    /**
     * Asigna la referencia del reporte
     * @param reporte
     */
    public void setReporte(ReporteTop reporte) {
        this.reporte = reporte;
    }

}
